term() {
kill %1
- (
- [ -n "$vncpid" ] && kill -9 $vncpid
- rm ${stubdom_configdir}/$domname-dm
- xm destroy $domname-dm
- ) &
- # We need to exit immediately so as to let xend do the commands above
+ [ -n "$vncpid" ] && kill -9 $vncpid
+ rm ${stubdom_configdir}/$domname-dm
exit 0
}
dev_config = pci_convert_sxp_to_dict(dev_sxp)
dev = dev_config['devs'][0]
- dom_list = xstransact.List('/local/domain')
- for d in dom_list:
- target = xstransact.Read('/local/domain/' + d + '/target')
- if target is not None and int(target) is self.domid :
- from xen.xend import XendDomain
- XendDomain.instance().domain_lookup(int(d)).pci_device_configure(dev_sxp[:])
+ stubdomid = self.getStubdomDomid()
+ if stubdomid is not None :
+ from xen.xend import XendDomain
+ XendDomain.instance().domain_lookup(stubdomid).pci_device_configure(dev_sxp[:])
# Do HVM specific processing
if self.info.is_hvm():
def getDomid(self):
return self.domid
+ def getStubdomDomid(self):
+ dom_list = xstransact.List('/local/domain')
+ for d in dom_list:
+ target = xstransact.Read('/local/domain/' + d + '/target')
+ if target is not None and int(target) is self.domid :
+ return int(d)
+ return None
+
def setName(self, name, to_store = True):
self._checkName(name)
self.info['name_label'] = name
return
self.sentinel_lock.acquire()
try:
- if self.pid:
+ stubdomid = self.vm.getStubdomDomid()
+ if stubdomid is not None :
+ from xen.xend import XendDomain
+ XendDomain.instance().domain_destroy(stubdomid)
+ elif self.pid:
try:
os.kill(self.pid, signal.SIGHUP)
except OSError, exn: